查看原文
其他

程序员应该在 2018 年做好 9 件事

2018-02-23 Javin Paul 开发者技术前线

2018年的开门红的红包刷爆了贵圈,开心的同时对即将到来的新一年工作有了更多期许?如果不满意 过完年了,要不要辞职?,如果你不换工作,那么在重新开始的一年,我们需要制定计划,锁定目标,并在这一年作出决议。



作为一名Java开发人员和Java博客的作者,我经常收到来自全国各地Java程序员的私信,询问他们如何提升自己。在过去,我已经分享了我的10个技巧,如何成为一个合格的程序员,而且这篇文章的每一个小技巧都是真实的,但是到了新的一年,我决定为Java程序员提供新的规划提升自己,提高他们对Java编程的了解,并对未来职业成长增加一定的价值。


所以,不浪费时间,让我们看看2018年新一年Java程序员的9个目标。你可以从这些目标中获得灵感,制定自己的目标和指南。 


学习Java性能调优


在过去的几年中,我已经为高级Java开发人员进行了50多次采访,而我清楚看到的一个技能是对JVM内部原理,GC和Java性能调优的理解。



随着你对Java编程经验的增长,你成为拥有5 - 6年以上经验的高级Java开发人员,希望你了解Java基本原理的概述和小细节。


如果你不能分析一个应用程序,或者不知道它为什么运行很慢,或者如何让它变得更快,那么你应该阅读一本关于JVM内部和性能优化的书,例如Scott Oaks的最佳销售者Java Performance权威指南。我这几年我已经阅读还几次了,每当我有时间的时候仍然会想到。我的目标是今年再读一遍。 


如果你更喜欢网上课程而不是书本,那么我建议你阅读一下关于Pluarlsight的Java虚拟机系列课程,它解释了内存管理,类加载,安全性和反射的技术。 


坚持每天编码2小时


我去年注意到的另一件事是,随着经验的增长,越多人花时间在协调人力、回复电子邮件上。也许是想成为有影响力、解决纠纷的职场老大哥?又或许是想要爬上更高的工作职位,类似于项目经理?




可不要忘了你的编码能力,才是一名程序员最重要的技能。


如果你觉得自己没有做足够的编码时间,那么每天都要做一个规划来编码。至少,写一些东西,不管是你的项目,开源框架,还是实用程序。开头是最难的,所以我建议,只要你感到有阻力,就阅读和重构代码以获得乐趣。你会发现,在这个过程中,你也会变的能写代码。


每个月一次配置你的Java应用程序


这个解决方案在阅读关于JVM内部和性能调优的这本好书里讲述了。只是光读这本书是不够的,必须在你的实际项目中应用这些知识。


我建议你至少每个月对Java应用程序进行一次简档分析,花大量时间来理解和分析结果。


你也可以使用Java进程的堆栈,或者如果最近发生了崩溃,那么将堆转储找出哪个对象占用了大部分内存。Java应用程序中是否有内存泄漏?原因是什么?如果有100K个新用户访问你的程序会发生什么?如果你能够畅快地回答所有这些问题,那么你的能力很好。如果你需要一些关于解决内存和CPU问题的指导,我建议你看一看 Richard Warburton的理解和解决Java内存问题。


参与编码算法挑战


这个目标再次与我们的第二个解决方案相关联 - 每天编写代码2个小时。

现实中,有时候你手头项目中没有足够的机会去编码。如果你想挑战更高级的代码,那么没有比参加编程挑战更好的了。在互联网上有许多网站承载编程挑战,并给你机会来测试你的技能,但TopCoder是最好的。如果你正在寻找一些艰难的编程挑战,那么你还可以查看2017 年最受欢迎的 10 个编程挑战网站


在Java中学习网络编程


我从面试人员那里学到的另外一件事是,Java开发人员需要加深他们的socket编程和http网络基础。我从Java网络编程问题列表中提出了许多问题,但大多数开发人员都无法回答大部分问题。他们中的一些人甚至很难概述TCP和UDP之间的主要差异,我认为这是最基本的,任何2-5年经验的Java开发人员。


如果你觉得你没有足够的机会学习Java编程,或者你不需要学习Java,因为你使用JSP,Servlet和JSF的Java Web开发人员,那么我建议你阅读至少一本好书关于Java网络,NIO和socket编程。


我强烈推荐的一本书是Java中的TCP / IP套接字,第二版,程序员实用指南。学习socket编程的基础知识很容易阅读、有趣,也是一个很好的方法。更多书籍推荐可阅读:你应该在 2018 年看完这10本免费编程书


Java 9


2017年出现了几个大的版本,其中一个是JDK 9. 我还没有开始使用JDK 9,但是我打算在2018年要去学习。如果你想学习新的功能,例如Jigsaw,Reactive Streams,API增强等,那么Java 9 MasterClass就是一个很好的案例。 其实还有java10的新特性预测:Java 10 新特性解密


Spring5.0


Spring 2017是另一个Java开发的大发行版本。有了许多令人兴奋的功能,例如响应式编程模型和采用Java 8和9,Spring 5.0的使用将在2018年得到普及,这就是每个Java开发人员都应该学习的原因。

如果你需要一些帮助, Spring 5.0:Beginner to Guru是一个很好的开端。 


Spring Security 5.0


2018年另一个有意义的是Spring Security 5.0 发布。5.0重写了几个模块并修复了几百个bug。最有趣的部分是OAuth 2.0模块。

不幸的是,目前学习Spring Security 5.0的资源并不多,但幸好Eugen更新了Learn Spring Security以覆盖版本5.0,并在OAuth 2.0上增加了一个新模块。 


单元测试


如果2018年你想成为更优秀的开发者,那么你应该在你的单元测试技能上下功夫。不仅仅是单元测试,而是一般的自动化测试。这还包括集成测试。你可以学习JUnit 5和其他高级单元测试库(如Mockito,PowerMock,Cucumber和Robot),将你的单元测试技巧提升到另一个的水平。Mockito非常强大,可以通过mk依赖关系并专注于测试对象来编写复杂类的单元测试。

如果你是单元测试的初学者,想要在2018年学习,那么来自Udemy 的JUnit和Mockito Crash Course是一个很好的起点。 


概要总结


以上这些只是我的个人建议!如果你是一位拥有多年经验的Java程序员,那么你也可以从这写建议中获取灵感来设定你的目标。你可以把这个列表中的其中几点去学习Android,Docker和Spark,因为这些对于任何Java程序员都是必不可少的。 


我尽可能说的简单一点和可实现原则,因为我个人认为,small successes lead to big successes。设定小目标并达成目标比制定大而不切实际的目标并能开始比失败要好。 


看到这里,你还在等什么?制定下新年的规划跟大伙们分享。到今年年底,你回过头来总结,看看收获了多少。但是作者也建议你做个除技术栈以外的年初计划,年底已表对自己的承诺与总结。


作者:Javin Paul

来源:开发者技术前线

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存